"""
链表的基本概念：
    背景：
        采用顺序表存储数据时，扩容的时候，必须要有连续的足够的内存空间，才会扩容成功，否则扩容失败。
        针对于这种情况，我们采用链表来存储数据。扩容的时候，不需要连续的存储空间，有闲置的地方即可（可以不用试连续的空间）
    定义：
        链表是一种线性数据结构，它由一系列节点组成，每个节点包含两部分：数据和指向下一个节点的指针。
        链表的第一个节点被称为头节点，最后一个节点被称为尾节点。
        链表的每个节点都可以独立存在，不需要连续的内存空间。
    白话：
        链表是由一系列节点组成的，每个节点包含两部分：数据和指向下一个节点的指针（内存地址）。
    分类：
        单向链表：
            节点由1个元素域（也叫数值域）和一个链接域（也叫指针域）组成。
            元素域：用来存储数据元素。
            指针域：用来指向下一个节点。
        双向链表：
            节点由1个元素域（也叫数值域）和2个链接域（也叫指针域）组成。
            元素域：用来存储数据元素。
            指针域：用来指向下一个节点和上一个节点。
        循环链表：
            节点由1个元素域（也叫数值域）和一个链接域（也叫指针域）组成。
            元素域：用来存储数据元素。
            指针域：用来指向下一个节点。
            区别：
                单向链表的尾节点的指针域指向None
                循环链表的尾节点的指针域指向头节点
"""